
#include "UFLMaterial.h"

using namespace ufl;

UFLMaterial::UFLMaterial()
:_ambient(ufl_color_4f(0.0f)), _diffuse(ufl_color_4f(0.0f)), _specular(ufl_color_4f(0.0f)), _name(ufl_string("material"))
{

}

UFLMaterial::~UFLMaterial()
{

}

bool UFLMaterial::intoGPU(UFLShaderProgram& shader)
{
	if (shader.getProgramID() > 0)
	{
		ufl_string uniformName;
		
		// 辐射度
        uniformName = _name +".emissive";
		shader.setUniform(uniformName, _emissive);

		// 环境光
        uniformName = _name +".ambient";
		shader.setUniform(uniformName, _ambient);

		// 漫射光
        uniformName = _name +".diffuse";
		shader.setUniform(uniformName, _diffuse);

		// 镜面高光
        uniformName = _name +".specular";
		shader.setUniform(uniformName, _specular);

		// 高光系数
        uniformName = _name +".shininess";
		shader.setUniform(uniformName, _shininess);
	}
	else
	{
		fprintf(stderr, "Don\t attach to a valid shader program.");
		return false;
	}

	return true;
}